-- 2022-7-26

--[[
    同一个表可以有不同的索引类型,并可以按需增长以容纳新的元素
]]

a = {}
a["x"] = 10
print(a["x"])
b = {"a","b","c"}
print(b[1])
print(b[2])
print(b[3])

--[[
    使用未初始化的表时得到的结果是nil，将nil赋值给元素，可删除
    这不是巧合，因为lua语言实际上就是使用表来存储全局变量的
    当把表当作结构体使用时可以把索引当成成员名称来使用a.name等价于a["name"],也就是当参数为字符串时可以用

    对于lua语言而言，这两种方式是等价且可以自由混用的;
    不过对于阅读程序的人而言，这两种形式可能表现了不同的意图
    一般，我们使用点来表示表被当作结构体使用，此时表实际上是由固定的，预先定义的键组成的集合
    表可以用任意字符串作为键，并且处于某种原因我们操作的是指定的键
    整型和浮点型的表索引不存在区别
]]

c = {}
c[1] = "a"
c["x"] = 1
print(c[1])
print(c.x)